package code18_design.template;

public abstract class SortUtil<T> {
	/**
	 * 对象数组排序
	 * @param arr
	 */
	public void sort(T[] arr) {
		for (int i = 1; i < arr.length; i++) {
			for (int j = 0; j < arr.length - i; j++) {
				// 讲比较规则交给调用者来实现
				int compare = compare(arr[j], arr[j + 1]);
				// 如果 大于0 则进行交换
				if (compare > 0) {
					T temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}
	/**
	 * t1 大于 t2, 返回 大于0 的值;<br>
	 * t1 小于 t2, 返回 小于0 的值;<br>
	 * t1 等于 t2, 返回 0<br>
	 * @param t1
	 * @param t2
	 * @return
	 */
	public abstract int compare(T t1, T t2);
}
